↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
FLAT_IN_AG(.([], T), R) → U1_AG(T, R, flat_in_ag(T, R))
FLAT_IN_AG(.([], T), R) → FLAT_IN_AG(T, R)
FLAT_IN_AG(.(.(H, T), TT), .(H, R)) → U2_AG(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_AG(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.([], T), R) → U1_GA(T, R, flat_in_aa(T, R))
FLAT_IN_GA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_AA(.([], T), R) → U1_AA(T, R, flat_in_aa(T, R))
FLAT_IN_AA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → U2_AA(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → U2_GA(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
FLAT_IN_AG(.([], T), R) → U1_AG(T, R, flat_in_ag(T, R))
FLAT_IN_AG(.([], T), R) → FLAT_IN_AG(T, R)
FLAT_IN_AG(.(.(H, T), TT), .(H, R)) → U2_AG(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_AG(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.([], T), R) → U1_GA(T, R, flat_in_aa(T, R))
FLAT_IN_GA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_AA(.([], T), R) → U1_AA(T, R, flat_in_aa(T, R))
FLAT_IN_AA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → U2_AA(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → U2_GA(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_AA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_GA(.([], T), R) → FLAT_IN_AA(T, R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_AA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_GA(.([], T), R) → FLAT_IN_AA(T, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
FLAT_IN_AA → FLAT_IN_GA(.)
FLAT_IN_GA(.) → FLAT_IN_GA(.)
FLAT_IN_AA → FLAT_IN_AA
FLAT_IN_GA(.) → FLAT_IN_AA
FLAT_IN_AA → FLAT_IN_GA(.)
FLAT_IN_GA(.) → FLAT_IN_GA(.)
FLAT_IN_AA → FLAT_IN_AA
FLAT_IN_GA(.) → FLAT_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
FLAT_IN_AG(.([], T), R) → FLAT_IN_AG(T, R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
FLAT_IN_AG(.([], T), R) → FLAT_IN_AG(T, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
FLAT_IN_AG(R) → FLAT_IN_AG(R)
FLAT_IN_AG(R) → FLAT_IN_AG(R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
FLAT_IN_AG(.([], T), R) → U1_AG(T, R, flat_in_ag(T, R))
FLAT_IN_AG(.([], T), R) → FLAT_IN_AG(T, R)
FLAT_IN_AG(.(.(H, T), TT), .(H, R)) → U2_AG(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_AG(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.([], T), R) → U1_GA(T, R, flat_in_aa(T, R))
FLAT_IN_GA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_AA(.([], T), R) → U1_AA(T, R, flat_in_aa(T, R))
FLAT_IN_AA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → U2_AA(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → U2_GA(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FLAT_IN_AG(.([], T), R) → U1_AG(T, R, flat_in_ag(T, R))
FLAT_IN_AG(.([], T), R) → FLAT_IN_AG(T, R)
FLAT_IN_AG(.(.(H, T), TT), .(H, R)) → U2_AG(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_AG(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.([], T), R) → U1_GA(T, R, flat_in_aa(T, R))
FLAT_IN_GA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_AA(.([], T), R) → U1_AA(T, R, flat_in_aa(T, R))
FLAT_IN_AA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → U2_AA(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → U2_GA(H, T, TT, R, flat_in_ga(.(T, TT), R))
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_AA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_GA(.([], T), R) → FLAT_IN_AA(T, R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
FLAT_IN_AA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_GA(.(.(H, T), TT), .(H, R)) → FLAT_IN_GA(.(T, TT), R)
FLAT_IN_AA(.([], T), R) → FLAT_IN_AA(T, R)
FLAT_IN_GA(.([], T), R) → FLAT_IN_AA(T, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
FLAT_IN_AA → FLAT_IN_GA(.)
FLAT_IN_GA(.) → FLAT_IN_GA(.)
FLAT_IN_AA → FLAT_IN_AA
FLAT_IN_GA(.) → FLAT_IN_AA
FLAT_IN_AA → FLAT_IN_GA(.)
FLAT_IN_GA(.) → FLAT_IN_GA(.)
FLAT_IN_AA → FLAT_IN_AA
FLAT_IN_GA(.) → FLAT_IN_AA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
FLAT_IN_AG(.([], T), R) → FLAT_IN_AG(T, R)
flat_in_ag([], []) → flat_out_ag([], [])
flat_in_ag(.([], T), R) → U1_ag(T, R, flat_in_ag(T, R))
flat_in_ag(.(.(H, T), TT), .(H, R)) → U2_ag(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga([], []) → flat_out_ga([], [])
flat_in_ga(.([], T), R) → U1_ga(T, R, flat_in_aa(T, R))
flat_in_aa([], []) → flat_out_aa([], [])
flat_in_aa(.([], T), R) → U1_aa(T, R, flat_in_aa(T, R))
flat_in_aa(.(.(H, T), TT), .(H, R)) → U2_aa(H, T, TT, R, flat_in_ga(.(T, TT), R))
flat_in_ga(.(.(H, T), TT), .(H, R)) → U2_ga(H, T, TT, R, flat_in_ga(.(T, TT), R))
U2_ga(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ga(.(.(H, T), TT), .(H, R))
U2_aa(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_aa(.(.(H, T), TT), .(H, R))
U1_aa(T, R, flat_out_aa(T, R)) → flat_out_aa(.([], T), R)
U1_ga(T, R, flat_out_aa(T, R)) → flat_out_ga(.([], T), R)
U2_ag(H, T, TT, R, flat_out_ga(.(T, TT), R)) → flat_out_ag(.(.(H, T), TT), .(H, R))
U1_ag(T, R, flat_out_ag(T, R)) → flat_out_ag(.([], T), R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FLAT_IN_AG(.([], T), R) → FLAT_IN_AG(T, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
FLAT_IN_AG(R) → FLAT_IN_AG(R)
FLAT_IN_AG(R) → FLAT_IN_AG(R)